package com.semis.common.enums;

import java.util.stream.Stream;

/**
 * 任务当前的所有状态
 */
public enum WorkTaskStatus {
    // 识别到车 -> 车辆入场 ： 下步执行-进入车位
    // 识别不到车位 -> 进入车位 ： 下步执行-进行停车
    // 静电释放、三角木、静电夹、防滑铁链+箱门有 -> 停车完成 ：下步执行-等待中控室确认
    // 中控室确认 -> 安全装置部署 ： 下步执行-部署安全装置
    // 安全装置全部部署完成 -> 开始作业 ： 下步执行-作业中
    // 作业牌完成 -> 安全装置拆除 ： 下步执行-拆除安全装置
    // 全部拆除完成 -> 待离场 ： 下步执行-车辆离场
    // 车辆离场 -> 完成作业，开始新一轮识别


    /**
     * 车辆入场
     */
    HAS_CAR("00", "等待进入车位"),
    /**
     * 进入车位
     */
    CAR_IN("01", "等待停车"),
    /**
     * 等待作业确认
     */
    WAIT_CONFIRM("02", "等待确认"),
    /**
     * 安全装置部署
     */
    DEPLOY("03", "安全装置部署"),
    /**
     * 装卸作业
     */
    WORKING("04", "装卸作业"),
    /**
     * 作业静置
     */
    STANDING("05", "作业静置"),
    /**
     * 拆除安全装置
     */
    DISMANTLE("06", "拆除安全装置"),
    /**
     * 待离场
     */
    CAN_LEAVE("07", "待离场"),
    /**
     * 完成
     */
    COMPLATE("08", "作业完成"),
    /**
     * 异常关闭
     */
    EXCEPTION("09", "异常关闭"),
    ;

    private final String code;

    private final String msg;

    WorkTaskStatus(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public static WorkTaskStatus getByCode(String code) {
        return Stream.of(WorkTaskStatus.values()).filter(w -> w.getCode().equals(code)).findAny().orElse(null);
    }
}
